package com.baosight.risk.mapper.system;

import com.baosight.risk.base.mapper.BaseMapper;
import com.baosight.risk.service.system.entity.SysMenu;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author duanyongqiang
 * @date 2019.3.27
 */
public interface SysMenuMapper extends BaseMapper<SysMenu> {

    /**
     * 查询系统正常显示菜单（不含按钮）
     *
     * @return 菜单列表
     */
    List<SysMenu> selectMenuNormalAll();

    /**
     * 查询系统菜单列表 根据名称模糊查询
     *
     * @param menu 菜单信息
     * @return 菜单列表
     */
    List<SysMenu> selectMenuList(SysMenu menu);


    /**
     * 根据用户ID查询菜单
     *
     * @param userId 用户ID
     * @return 菜单列表
     */
    List<SysMenu> selectMenusByUserId(String userId);

    /**
     * 根据用户ID查询菜单
     *
     * @param userCode 用户ID
     * @param compCode 组织编码
     * @return 菜单列表
     */
    List<SysMenu> selectMenusByCompCode(@Param("compCode") String compCode, @Param("userCode") String userCode);

    /**
     * 根据用户ID查询权限
     *
     * @param userId 用户ID
     * @return 权限列表
     */
    List<String> selectPermsByUserId(String userId);

    /**
     * 根据菜单ID集合查询
     *
     * @param ids 菜单ID集合
     * @return 权限列表
     */
    List<SysMenu> queryMenuByIds(@Param("ids") List<String> ids);


    /**
     * 删除菜单管理信息
     *
     * @param menuId 菜单ID
     * @return 结果
     */
    int deleteMenuById(@Param("menuId") String menuId);

    /**
     * 根据菜单ID查询信息
     *
     * @param menuId 菜单ID
     * @return 菜单信息
     */
    SysMenu selectMenuById(String menuId);

    /**
     * 查询菜单数量
     *
     * @param parentId 菜单父ID
     * @return 结果
     */
    int selectCountMenuByParentId(String parentId);


    List<SysMenu> getMenuByRoleIdAndCompId(@Param("compId") String compId, @Param("roleId") String roleId);

    List<SysMenu> getMenuByCompIdAndRoleIds(@Param("compId") String compId, @Param("roleIds") List<String> roleIds);

    int selectCountRoleMenuByMenuId(@Param("menuId") String menuId);
}